Elasticsearch排序与评分机制记录:关于term和terms权重与filter和should
最近在优化一个全文检索业务时,遇到了一个典型的排序场景:用户要求搜索结果首先按相关性排序,相关性相同时按创建时间倒序。听起来很简单对吧?但当我真正上手写 DSL 时,才发现 must、filter、should 以及 sort 之间的微妙关系远比想象中复杂。 研究发现了 term 查询在 must 与 filter 中的评分差异、terms 为何默认得分恒定、以及如何利用 bool + should + sort 实现“硬过滤 + 软评分”的混合排序。 问题背景 业务场景是文章搜索,核心需求如下: 硬性筛选:只返回状态为 published、且创建时间在某个时间点之后的文章。 相关性排序:根据用户输入的关键词(如标签、作者)计算匹配度,分数越高越靠前。 时间兜底:当两篇文章的相关性分数完全一致时,最新的文章排..
更多